ivy Task: কিভাবে Dependency Resolve করবেন

Java Technologies - অ্যাপাচি আইভি (Apache IVY) IVY Resolve এবং Report Task |
138
138

Apache Ivy একটি ডিপেন্ডেন্সি ম্যানেজমেন্ট টুল যা Java প্রোজেক্টের জন্য বাইরের লাইব্রেরি এবং ডিপেন্ডেন্সি স্বয়ংক্রিয়ভাবে ডাউনলোড এবং ম্যানেজ করতে ব্যবহৃত হয়। Ivy-এর ivy টাস্কটি ডিপেন্ডেন্সি রেজলভ করার জন্য ব্যবহৃত হয়, যা নির্দিষ্ট ivy.xml ফাইল থেকে লাইব্রেরি রেজলভ এবং ডাউনলোড করে।

Dependency Resolve কিভাবে করবেন

Dependency resolve এর মাধ্যমে আপনি আপনার প্রোজেক্টের জন্য প্রয়োজনীয় লাইব্রেরি বা ডিপেন্ডেন্সি রেজলভ করতে পারেন। Ivy এই ডিপেন্ডেন্সিগুলি বিভিন্ন রিপোজিটরি থেকে স্বয়ংক্রিয়ভাবে ডাউনলোড করবে, যা প্রোজেক্টের বিল্ড প্রক্রিয়ায় ব্যবহার করা হবে।

১. ivy.xml ফাইল তৈরি করা

Ivy ডিপেন্ডেন্সি রেজলভ করার জন্য একটি ivy.xml ফাইলের প্রয়োজন হয়, যেখানে আপনি আপনার প্রোজেক্টের ডিপেন্ডেন্সি এবং রিপোজিটরি কনফিগার করবেন।

ivy.xml উদাহরণ:

<ivy-module version="2.0">
    <info organisation="com.example" module="my-app" />

    <repositories>
        <repository name="central" url="https://repo.maven.apache.org/maven2" />
    </repositories>

    <dependencies>
        <dependency org="org.apache.commons" name="commons-lang3" rev="3.12.0" />
        <dependency org="junit" name="junit" rev="4.13.1" />
    </dependencies>
</ivy-module>

এখানে:

  • <info> ট্যাগে আপনার প্রোজেক্টের organisation এবং module নাম উল্লেখ করা হয়েছে।
  • <repositories> ট্যাগে আপনার ব্যবহার করা রিপোজিটরি Maven Central এর URL উল্লেখ করা হয়েছে।
  • <dependencies> ট্যাগে আপনার প্রোজেক্টের জন্য ডিপেন্ডেন্সি লাইব্রেরি এবং তাদের সংস্করণ উল্লেখ করা হয়েছে, যেমন commons-lang3 এবং JUnit

২. Ant স্ক্রিপ্ট তৈরি করা

Ant স্ক্রিপ্টে Ivy টাস্ক ব্যবহার করে ডিপেন্ডেন্সি রেজলভ করতে হবে। Ivy টাস্কটি Ant বিল্ড টুলের অংশ হিসেবে ব্যবহৃত হয়।

build.xml উদাহরণ:

<project name="IvyExample" default="resolve-dependencies" basedir=".">
    
    <!-- Task Definition for Ivy -->
    <taskdef name="ivy" classname="org.apache.ivy.ant.IvyTask" />

    <!-- Target to resolve dependencies -->
    <target name="resolve-dependencies">
        <ivy:resolve file="ivy.xml"/>
        <ivy:retrieve/>
    </target>
</project>

এখানে:

  • <taskdef> ট্যাগে Ivy টাস্ক ডিফাইন করা হয়েছে, যাতে Ivy টাস্ক ব্যবহার করা যায়।
  • <ivy:resolve> টাস্কটি ivy.xml ফাইল থেকে ডিপেন্ডেন্সি রেজলভ করবে এবং এটি সঠিক সংস্করণে লাইব্রেরি ডাউনলোড করবে।
  • <ivy:retrieve> টাস্কটি রেজলভড লাইব্রেরি ডাউনলোড করবে এবং সেগুলিকে lib/ ডিরেক্টরিতে রেখে দেবে।

৩. Ivy Task এর মাধ্যমে Dependency Resolve করা

এখন, Ant স্ক্রিপ্টটি চালালে Ivy টাস্ক ivy.xml ফাইলের ডিপেন্ডেন্সি রেজলভ করবে এবং লাইব্রেরি ডাউনলোড করবে।

কমান্ড:

ant resolve-dependencies

এটি চালানোর পর, Ivy প্রোজেক্টের জন্য প্রয়োজনীয় লাইব্রেরি ডাউনলোড করবে এবং lib/ ফোল্ডারে সেই লাইব্রেরি সংরক্ষণ করবে। যেমন:

lib/
  commons-lang3-3.12.0.jar
  junit-4.13.1.jar

এখানে:

  • commons-lang3-3.12.0.jar এবং junit-4.13.1.jar ফাইলগুলি আপনার lib/ ডিরেক্টরিতে ডাউনলোড হবে, যেগুলি আপনার প্রোজেক্টের বিল্ডে ব্যবহৃত হবে।

৪. Transitive Dependency Resolve

যখন একটি লাইব্রেরি অন্য একটি লাইব্রেরির উপর নির্ভরশীল হয়, তখন Ivy স্বয়ংক্রিয়ভাবে transitive dependencies রেজলভ করে। উদাহরণস্বরূপ, যদি commons-lang3 লাইব্রেরি commons-collections লাইব্রেরির উপর নির্ভরশীল হয়, তবে Ivy commons-collections লাইব্রেরিটিও ডাউনলোড করবে।

ধরা যাক, commons-lang3 লাইব্রেরি commons-collections এর উপর নির্ভরশীল। তখন Ivy এটি ডাউনলোড করবে।

<ivy-module version="2.0">
    <info organisation="com.example" module="my-app" />

    <repositories>
        <repository name="central" url="https://repo.maven.apache.org/maven2" />
    </repositories>

    <dependencies>
        <dependency org="org.apache.commons" name="commons-lang3" rev="3.12.0" />
    </dependencies>
</ivy-module>

এখন, Ivy commons-lang3 লাইব্রেরি ডাউনলোড করার সময় এটি commons-collections লাইব্রেরি স্বয়ংক্রিয়ভাবে ডাউনলোড করবে।

৫. Dependency Conflict Resolution

যখন একাধিক লাইব্রেরি একই ডিপেন্ডেন্সির ভিন্ন সংস্করণে নির্ভরশীল থাকে, তখন Ivy কনফ্লিক্ট রেজলভেশন করে একটি সংস্করণ নির্বাচন করে। এটি ডিফল্টভাবে সর্বশেষ সংস্করণ নির্বাচন করে, কিন্তু আপনি চাইলে কাস্টম কনফ্লিক্ট রেজল্যুশন পলিসি নির্ধারণ করতে পারেন।

উদাহরণ: Dependency Conflict

ধরা যাক, আপনার প্রোজেক্টে দুটি ডিপেন্ডেন্সি রয়েছে যা একই লাইব্রেরির বিভিন্ন সংস্করণে নির্ভরশীল:

<dependencies>
    <dependency org="org.apache.commons" name="commons-lang3" rev="3.12.0"/>
    <dependency org="org.apache.commons" name="commons-lang3" rev="3.10.0"/>
</dependencies>

Ivy স্বয়ংক্রিয়ভাবে commons-lang3 এর সর্বশেষ সংস্করণ (৩.১২.০) রেজলভ করবে।


৬. Ivy Dependency Resolve Command Options

Ivy-এর মাধ্যমে dependency resolve করার সময় আপনি বিভিন্ন অপশন ব্যবহার করতে পারেন, যেমন:

  • -D: ডিপেন্ডেন্সি এবং কনফিগারেশন ফাইলের পাথ পরিবর্তন করতে।
  • -retrieve: ডিপেন্ডেন্সি রিট্রিভ করে, lib/ ফোল্ডারে লাইব্রেরি ডাউনলোড করবে।

সারাংশ

Ivy এবং Ant এর মধ্যে Ivy টাস্ক ব্যবহার করে আপনি আপনার প্রোজেক্টের ডিপেন্ডেন্সি সহজভাবে রেজলভ এবং ডাউনলোড করতে পারেন। ivy.xml ফাইলের মাধ্যমে ডিপেন্ডেন্সি কনফিগার এবং রেজলভ করা হয়, এবং Ant স্ক্রিপ্টের মাধ্যমে Ivy টাস্ক ব্যবহার করে ডিপেন্ডেন্সি ডাউনলোড করা হয়। এই প্রক্রিয়া বিশেষভাবে বড় প্রোজেক্টের জন্য উপকারী যেখানে বাইরের লাইব্রেরি বা ওপেন সোর্স লাইব্রেরি ব্যবহৃত হয়।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion